﻿-- 2) Flag de activo/inactivo para los círculos. Activo = tiene miembros.
CREATE OR REPLACE FUNCTION hay_usuarios() RETURNS TRIGGER AS $hay_usuarios$
	DECLARE 
		row text;
	BEGIN
		IF TG_OP = 'INSERT' THEN
			IF ((SELECT COUNT(*) FROM usuario_en_circulo WHERE circulo = NEW.circulo) > 0) THEN
				UPDATE circulo 
				SET tiene_usuarios = 'true'
				WHERE id = NEW.circulo;
			ELSE
				UPDATE circulo
				SET tiene_usuarios = 'false'
				WHERE id = NEW.circulo;
			END IF;
		ELSIF TG_OP = 'DELETE' THEN
			IF ((SELECT COUNT(*) FROM usuario_en_circulo WHERE circulo = OLD.circulo) > 0) THEN
				UPDATE circulo 
				SET tiene_usuarios = 'true'
				WHERE id = OLD.circulo;
			ELSE
				UPDATE circulo
				SET tiene_usuarios = 'false'
				WHERE id = OLD.circulo;
			END IF;
		END IF;
		RETURN NULL;
	END;
$hay_usuarios$ LANGUAGE plpgsql;

CREATE TRIGGER circulo_tiene_usuarios AFTER DELETE OR INSERT
	ON usuario_en_circulo FOR EACH ROW 
	EXECUTE PROCEDURE hay_usuarios();